#include "os_init.h"
#include "../data_struct/head.h"
#include "../global/head.h"

//////////////////////////////////////////////////////////////////////////////////////////////////
// 

namespace xos_test
{

    os_init::os_init()
    {
        m_pMisc = 0;
        m_pCrt = 0;
        m_pXos = 0;
    }

    os_init::~os_init()
    {
    }

    //////////////////////////////////////////////////////////////////////////////////////////////
    // 

    int os_init::init()
    {
        int nRet = 0;

        if( 0 == nRet )
        {
            nRet = m_GetXos.init();
            if( 0 == nRet )
            {
                g_pSysData->m_pXos = m_GetXos.m_pApi;
                m_pXos = m_GetXos.m_pApi;
            }
        }

        if( 0 == nRet )
        {
            nRet = m_pXos->create( xos::i_xos::XOS_OBJ_MISC, ( void ** )&m_pMisc );
            if( 0 == nRet )
            {
                m_pMisc->get_process_path( g_pSysData->m_szExePath, sizeof( g_pSysData->m_szExePath ), 0 );
                g_pSysData->m_pMisc = m_pMisc;
            }
        }

        if( 0 == nRet )
        {
            nRet = m_pXos->create( xos::i_xos::XOS_OBJ_CRT, ( void ** )&m_pCrt );
            if( 0 == nRet )
            {
                g_pSysData->m_pCrt = m_pCrt;
            }
        }

        if( 0 == nRet )
        {
            nRet = m_GetLog.init( g_pSysData->m_szExePath );
        }

        if( 0 == nRet )
        {
            nRet = m_GetCommon.init( g_pSysData->m_szExePath );
        }

        return nRet;
    }

    int os_init::term()
    {
        int nRet = 0;

        m_GetCommon.term();
        m_GetLog.term();
        m_GetXos.term();

        return nRet;
    }

} // xos_test
